Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

342
Vistas
¿Cómo se puede usar "Hora estándar romántica" para establecer la zona horaria?

Tengo la cadena de fecha UTC "2022-01-06T13:35:00Z" y la cadena de zona horaria "Romance Standard Time" . ¿Cómo puedo usar esa cadena de zona horaria en JavaScript (en un navegador) para que pueda corregir la hora a las 14:35 ?

Las bibliotecas de zona horaria que he encontrado hasta ahora usan la zona horaria de la IANA, por ejemplo, "Europe/Copenhagen" , por lo que una biblioteca que pueda convertir "Romance Standard Time" en algo como "Europe/Paris" también respondería a mi pregunta. Es aceptable que esta conversión se realice en .NET y no en JavaScript.

about 4 years ago · Juan Pablo Isaza
2 Respuestas
Responde la pregunta

0

JavaScript

Si desea hacerlo con Javascript, hay varias bibliotecas. Estoy más familiarizado con moment.js , sin embargo, están en desuso, lo que significa que es posible que desee usar otra biblioteca si está trabajando en un nuevo proyecto.

Lista de bibliotecas sugeridas por moment.js .

De todos modos, si desea trabajar con momento y convertir a zonas horarias, puede hacerlo fácilmente usando Moment-Timezone . Todas las zonas horarias admitidas .

Por ejemplo:

 const moment = require('moment-timezone'); const timeZone = "Europe/Paris"; const ISOString = "2022-01-06T13:35:00Z"; //2022-01-06T13:35:00Z const momentDefault = moment(ISOString).format(); //2022-01-06T14:35:00+01:00 const momentTz = moment.utc(ISOString).tz(timeZone).format(); //2022-01-06T14:35:00+01:00

Como puede ver, moment obtiene la zona horaria de forma predeterminada y maneja ISOString como un valor UTC, por lo que convierte automáticamente el valor a la zona horaria del usuario del cliente.

Todavía puede indicar específicamente el momento para manejar ISOString como UTC ISOString y luego convertirlo a una zona horaria específica que definió. De esa forma se ignorará la zona horaria del cliente.

EDITAR: Ahora me di cuenta de que el interrogador quiere convertir la zona horaria de Windows a Iana antes de convertirla en Javascript, porque la mayoría de las bibliotecas, incluido Moment.js, no admiten las identificaciones de zona horaria de Windows.

Encontré una buena biblioteca aquí .

Y aquí hay un ejemplo de cómo convertir la zona horaria primero y luego usar moment.js.

 import { findIana } from 'windows-iana'; const moment = require('moment-timezone'); const result = findIana('Romance Standard Time'); console.log(result); // ['Europe/Paris', 'Europe/Brussels', 'Europe/Copenhagen', 'Europe/Madrid', 'Africa/Ceuta'] const timeZone = result[0]; //doesn't really matter which one to take, if you are just converting the times. const ISOString = "2022-01-06T13:35:00Z"; //2022-01-06T13:35:00Z const momentDefault = moment(ISOString).format(); //2022-01-06T14:35:00+01:00 const momentTz = moment.utc(ISOString).tz(timeZone).format(); //2022-01-06T14:35:00+01:00

.NET C#

Para convertir una hora a una zona horaria específica en C#, no necesita ningún paquete adicional, simplemente puede hacerlo de la siguiente manera:

 var isoString = "2022-01-06T13:35:00Z"; var utcDate= DateTime.Parse(isoString); var timeZone = "Romance Standard Time"; var date = TimeZoneInfo.ConvertTime(utcDate, TimeZoneInfo.FindSystemTimeZoneById(timeZone)); //01/06/2022 14:35:00

Aquí puede encontrar una lista de todos los timezoneId compatibles

about 4 years ago · Juan Pablo Isaza Denunciar

0

La clave fue entender que "Romance Standard Time" es una ID de zona horaria de Windows . Todos los demás utilizan los ID de zona horaria de la IANA . Tienen el formato de región/ciudad, por ejemplo, "Europe/Copenhagen" .

En .NET 6 es posible convertir entre los formatos. Este es el ejemplo de código de Mejoras de fecha, hora y zona horaria en .NET 6 .

 // Conversion from Windows to IANA when a region is unknown. string windowsTimeZoneId = "Eastern Standard Time"; if (!TimeZoneInfo.TryConvertWindowsIdToIanaId( windowsTimeZoneId, out string ianaTimeZoneId)) { throw new TimeZoneNotFoundException( $"No IANA time zone found for "{windowsTimeZoneId}"."); } Console.WriteLine($"{windowsTimeZoneId} => {ianaTimeZoneId}"); // "Eastern Standard Time => America/New_York"
 // Conversion from Windows to IANA when a region is known. string windowsTimeZoneId = "Eastern Standard Time"; string region = "CA"; // Canada if (!TimeZoneInfo.TryConvertWindowsIdToIanaId( windowsTimeZoneId, region, out string ianaTimeZoneId)) { throw new TimeZoneNotFoundException( $"No IANA time zone found for "{windowsTimeZoneId}" in "{region}"."); } Console.WriteLine($"{windowsTimeZoneId} + {region} => {ianaTimeZoneId}"); // "Eastern Standard Time + CA => America/Toronto"

Si tiene una versión anterior de .NET, puede usar TimeZoneConverter . Aquí hay una lista completa de las zonas horarias en caso de que necesite crear su propio convertidor: windowsZones.json .

Esta respuesta a esta pregunta sugiere usar NodaTime, por lo que probablemente también sea una posibilidad: ¿Convertir la zona horaria de Windows en la zona horaria de moment.js?

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda